/**
 * @description json schema 验证中间件
 * @author chengpeng
 */

const {
    ErrorModel
} = require('../model/ResModel')
const {
    jsonSchemaFileInfo
} = require('../model/ErrorInfo')

/**
 * @description json schema 验证中间件
 * @author chengpeng
 * @param {function} validateFn 验证函数 
 */
function genValidator(validateFn) {
    // 定义中间件函数
    async function validator(ctx, next) {
        const data = ctx.request.body
        const error = validateFn(data)
        if (error) {
            console.error(error)
            ctx.body = new ErrorModel(jsonSchemaFileInfo)
            return
        }
        await next()
    }
    return validator
}

module.exports = {
    genValidator
}